Estrutura T> System.Nullable<

Este artigo fornece observações complementares à documentação de referência para essa API.

A Nullable classe representa um tipo de valor que pode ser atribuído null.

Um tipo é dito ser anulável se ele pode ser atribuído um valor ou pode ser atribuído null, o que significa que o tipo não tem nenhum valor. Por padrão, todos os tipos de referência, como , são anuláveis, mas todos os tipos de valor, como StringInt32, não são.

Em C# e Visual Basic, você marca um tipo de valor como anulável usando a ? notação após o tipo de valor. Por exemplo, int? em C# ou Integer? no Visual Basic declara um tipo de valor inteiro que pode ser atribuído null.

A Nullable<T> estrutura oferece suporte ao uso apenas de um tipo de valor como um tipo anulável porque os tipos de referência são anuláveis por design.

A Nullable turma dá suporte complementar para a Nullable<T> estrutura. A Nullable classe oferece suporte à obtenção do tipo subjacente de um tipo anulável e operações de comparação e igualdade em pares de tipos anuláveis cujo tipo de valor subjacente não oferece suporte a operações genéricas de comparação e igualdade.

Propriedades fundamentais

Os dois membros fundamentais da Nullable<T> estrutura são as HasValue propriedades e Value propriedades. Se a propriedade de um Nullable<T> objeto for true, o valor do objeto poderá ser acessado com a HasValueValue propriedade. Se a propriedade for false, o valor do objeto será indefinido e uma tentativa de acessar a HasValueValue propriedade lançará um InvalidOperationExceptionarquivo .

Conversão boxing e unboxing

Quando um tipo anulável é encaixotado, o Common Language Runtime encaixota automaticamente o valor subjacente do Nullable<T> objeto, não o Nullable<T> objeto em si. Ou seja, se a HasValue propriedade for true, o conteúdo da Value propriedade será encaixotado. Quando o valor subjacente de um tipo anulável é unboxed, o Common Language Runtime cria uma nova Nullable<T> estrutura inicializada para o valor subjacente.

Se a HasValue propriedade de um tipo anulável for false, o resultado de uma operação de boxe será null. Consequentemente, se um tipo anulável in a box for passado para um método que espera um argumento de objeto, esse método deverá estar preparado para manipular o caso em que o argumento é null. Quando null é unboxed em um tipo anulável, o common language runtime cria uma nova Nullable<T> estrutura e inicializa sua HasValue propriedade para false.

Componentes do Tempo de Execução do Windows

Você pode incluir um Nullable<T> tipo como membro de uma estrutura exportada em uma biblioteca WinMD.